﻿using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
namespace WindowsGame1
{
    class Jogo4
    {
        Persona[] Inimigos;
        Persona Voce;
        int[] Dir;

        public Jogo4(Texture2D a, Texture2D c)
        {
            Inimigos = new Persona[30];
            Dir = new int[30];
            Voce = new Persona(0, 0, c);
            Random _r = new Random();
            for (int b = 0; b < 30;b++ )
            {
                Dir[b] = _r.Next(4);
                if (Dir[b] == 0 || Dir[b] == 1)
                {
                    Inimigos[b] = new Persona(0, _r.Next(768), a);
                }
                else
                {
                    Inimigos[b] = new Persona(_r.Next(1024), 768, a);
                }
            }
        }

        public void Reseta()
        {
            Random _r = new Random();
            for (int b = 0; b < 30; b++)
            {
                Dir[b] = _r.Next(4);
                if (Dir[b] <= 1)
                {
                    Inimigos[b].Pos = new Vector2(0, _r.Next(768));
                }
                else
                {
                    Inimigos[b].Pos = new Vector2(_r.Next(1024), 768);
                }
            }
        }

        public char Update(MouseState ms, Tempo Time, Song[] Musicas)
        {
            if (Time.tempoRestante <= TimeSpan.FromSeconds(0))
            {
                Time.ResetaTempo();
                return '5';
            }
            Voce.Pos.X = ms.X;
            if (ms.X > 1010)
            {
                Voce.Pos.X = ms.X;
            }
            if (ms.X < 0)
            {
                Voce.Pos.X = ms.X;
            }
            Voce.Pos.Y = ms.Y;
            if (ms.Y < 0)
            {
                Voce.Pos.Y = 0;
            }
            if (ms.Y > 750)
            {
                Voce.Pos.Y = 750;
            }
            if (Colide())
            {
                MediaPlayer.Play(Musicas[2]);
                Time.tempoRestante = TimeSpan.FromSeconds(5);
                return '0';
            }
            Movimenta();
            return '4';
        }

        public bool Colide()
        {
            Rectangle r1 = new Rectangle((int)Voce.Pos.X, (int)Voce.Pos.Y, (int)Voce.Img.Width, (int)Voce.Img.Height);
            foreach (Persona a in Inimigos)
            {
                Rectangle r2 = new Rectangle((int)a.Pos.X, (int)a.Pos.Y, (int)a.Img.Width, (int)a.Img.Height);
                if (r1.Intersects(r2))
                {
                    return true;
                }
            }
            return false;
        }

        public void Draw(SpriteBatch spriteBatch)
        {
            spriteBatch.Draw(Voce.Img, Voce.Pos, Color.White);
            foreach (Persona a in Inimigos)
            {
                spriteBatch.Draw(a.Img, a.Pos, Color.White);
            }
        }

        public void MudaPos(int a)
        {
            Random _r = new Random();
            //Dir[a] = _r.Next(4);
            if (Dir[a] <= 1)
            {
                Inimigos[a].Pos = new Vector2(0, _r.Next(768));
            }
            else
            {
                Inimigos[a].Pos = new Vector2(_r.Next(1024), 768);
            }
        }

        public void Movimenta()
        {
            for(int a = 0; a < 30;a++)
            {
                if(Dir[a] == 0)
                {
                    Inimigos[a].Pos.X+=7;
                    if (Inimigos[a].Pos.X >= 1024)
                    {
                        //MudaPos(a);
                        Inimigos[a].Pos.X = 0;
                    }
                }
                if (Dir[a] == 1)
                {
                    Inimigos[a].Pos.X -= 7;
                    if (Inimigos[a].Pos.X <= 0)
                    {
                        //MudaPos(a);
                        Inimigos[a].Pos.X = 1024;
                    }
                }
                if (Dir[a] == 2)
                {
                    Inimigos[a].Pos.Y += 7;
                    if (Inimigos[a].Pos.Y >= 768)
                    {
                        //MudaPos(a);
                        Inimigos[a].Pos.Y = 0;
                    }
                }
                if (Dir[a] == 3)
                {
                    Inimigos[a].Pos.Y -= 7;
                    if (Inimigos[a].Pos.Y <= 0)
                    {
                        //MudaPos(a);
                        Inimigos[a].Pos.Y = 768;
                    }
                }
            }
        }

        public int PegaRand()
        {
            Random a = new Random();
            return a.Next(4);
        }
    }
}
